Well, after looking around for a good non-blocking multi-instance stepper library that has hooks I can exploit with input speeds from LinuxCNC (a very tall order) I found one that could do it. AccelStepper, so I put my coding hat on, brewed some coffee and banged out rough implementation of HAL2Arduino 0.4 (the preRelease version).
For those of you that have been waiting ever so patiently for the next generation of EMC2Arduino, here is the first version of HAL2Arduino that is actually useful to the average end-user.
This version has a couple of bug fixes:
- Bi-directional communications fix. (Coding typo)
- Init spam bug fixed.
Added features:
- Support for plugin based mod files, for drag-n-drop/compile add on features.
- Pre-compiler optimized code (modFiles too!) to keep the memory footprint lower, saving more room for your code. Unused code won’t be added to your final build.
- Added “Green Light” signal so Arduino clients can synchronize with each other.
Added modFiles:
- modAccelStepper: 0~9 axises of speed sensing motion control, default config is for 3-axis machine suitable for routers, plasma tables, basic mills, etc.
- modLimSwitch: support for min/max/home switches, both physical and/or virtual (based on stepper positions).
- modLcd: Updated to run on HAL2Arduino-0.4 (Still just a basic example of a DRO.)
In the pipeline:
modButtons: A control panel collection for the basics like E-Stop, start, stop, pause, step, etc.
Config LinuxCNC from Arduino. ie: Edit/upload HAL2Arduino to your arduino, run the host side python script and the custom.hal files get generated for you, based on the configuration of the arduino(s).
If you like, you may grab an early copy of it here.